﻿namespace Jst.Infrastructure.DbFirst
{
    // <summary>
    /// DbFirst 脚手架的输入参数
    /// </summary>
    public sealed class ScaffoldOptions
    {
        /// <summary>
        /// 数据库连接字符串
        /// </summary>
        public string ConnectionString { get; init; } = default!;

        /// <summary>
        /// 输出目录（绝对或相对路径）
        /// </summary>
        public string OutputPath { get; init; } = default!;

        /// <summary>
        /// 生成类的命名空间
        /// </summary>
        public string NameSpace { get; init; } = "TableModels";

        /// <summary>
        /// 需要排除的表（正则，可空）
        /// </summary>
        public string? ExcludeTableRegex { get; init; }

        /// <summary>
        /// 需要包含的表（正则，可空，优先于排除）
        /// </summary>
        public string? IncludeTableRegex { get; init; }

        /// <summary>
        /// 是否覆盖已存在文件
        /// </summary>
        public bool Force { get; init; }

        public void EnsureValid()
        {
            if (string.IsNullOrWhiteSpace(ConnectionString))
                throw new ArgumentException("连接字符串不能为空");
            if (string.IsNullOrWhiteSpace(OutputPath))
                throw new ArgumentException("输出目录不能为空");

            Directory.CreateDirectory(OutputPath);
        }
    }
}
